home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / PRGMMING / PBC30.ZIP / PATCH.BAS < prev    next >
Encoding:
BASIC Source File  |  1994-11-12  |  1.6 KB  |  53 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1994  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.  
  8.    DECLARE SUB FClose1 (BYVAL FileHandle%)
  9.    DECLARE SUB FOpen1 (FileName$, BYVAL ReadWrite%, BYVAL Sharing%, FileHandle%, ErrCode%)
  10.    DECLARE SUB FSetOfs (BYVAL FileHandle%, Offset&)
  11.    DECLARE SUB SFRead (BYVAL FileHandle%, St$, BytesRead%, ErrCode%)
  12.    DECLARE SUB SFWrite (BYVAL FileHandle%, St$, BytesWritten%, ErrCode%)
  13.  
  14.    DECLARE FUNCTION Patch01% ()
  15.    DECLARE SUB Patch00 (BYVAL FileHandle%)
  16.  
  17. SUB FindPatch (FileName$, SearchSt$, ErrCode%)
  18.    IF INSTR(FileName$, ".") THEN
  19.       File$ = FileName$
  20.    ELSE
  21.       File$ = FileName$ + ".EXE"
  22.    END IF
  23.    FOpen1 File$, 2, 2, Handle%, ErrCode%
  24.    Chunk$ = SPACE$(512)
  25.    DO UNTIL Found% OR ErrCode%
  26.       SFRead Handle%, Chunk$, BytesRead%, ErrCode%
  27.       St$ = RIGHT$(St$ + LEFT$(Chunk$, BytesRead%), 768)
  28.       IF ErrCode% <= 0 THEN
  29.          tmp% = INSTR(St$, SearchSt$)
  30.          IF tmp% THEN
  31.             Found% = -1
  32.             FSetOfs Handle%, CLNG(tmp% + LEN(SearchSt$) + 5 - LEN(St$))
  33.             Patch00 Handle%
  34.          END IF
  35.       END IF
  36.    LOOP
  37.    IF ErrCode% <= 0 THEN ErrCode% = NOT Found%
  38. END SUB
  39.  
  40.  
  41.  
  42. SUB PatchDone
  43.    FClose1 Patch01%
  44. END SUB
  45.  
  46.  
  47.  
  48. SUB SetPatch (St$)
  49.    Handle% = Patch01%
  50.    SFWrite Handle%, St$, BytesWritten%, ErrCode%
  51.    FSetOfs Handle%, 6&
  52. END SUB
  53.